import cv2
import numpy
name = 'liujiarui'#设置当前要采集的人员姓名，用于图像存放的文件名
num = 1 #记录采集的数量，也用于图像存放的文件名
cascade = cv2.CascadeClassifier('data/haarcascade_frontalface_alt.xml')
cv2.waitKey()
camera = cv2.VideoCapture(0)   #创建视频捕捉器对象
if not camera.isOpened:
    print('不能打开摄像头')
    exit(0)     #不能打开摄像头时exit(0)结束程序
while True:
    # 读取摄像头图像
    ret, frame = camera.read()
    # 将图像转换为灰度图像
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    # 检测人脸
    faces = cascade.detectMultiScale(gray, scaleFactor=1.3, minNeighbors=5)
    for (x, y, w, h) in faces:
        # 提取人脸图像
        faceImg = frame.copy()
        faceImg = faceImg[y:y + h, x:x + w]
        # 在图像上绘制人脸边框
        cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
    cv2.imshow('faces',frame)                              #显示帧

    key = cv2.waitKey(50)
    if key == ord("s"):              #按s键保存图像
        # 设置保存人脸图像的目录和文件名
        imagePath = 'faces//' + name + str(num) + '.jpg'
        cv2.imwrite(imagePath, faceImg)#保存人脸图像
        num += 1    #人脸图像数量
        print('Captured:', imagePath)
camera.release()
